import pandas as pd
import numpy as np
raw_data_1 = {
        'subject_id': ['1', '2', '3', '4', '5'],
        'first_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
        'last_name': ['Anderson', 'Ackerman', 'Ali', 'Aoni', 'Atiches']}

raw_data_2 = {
        'subject_id': ['4', '5', '6', '7', '8'],
        'first_name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
        'last_name': ['Bonder', 'Black', 'Balwner', 'Brice', 'Btisan']}

raw_data_3 = {
        'subject_id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'],
        'test_id': [51, 15, 15, 61, 16, 14, 15, 1, 61, 16]}


df1=pd.DataFrame(raw_data_1,columns= ['subject_id', 'first_name', 'last_name'])
df2=pd.DataFrame(raw_data_2,columns= ['subject_id', 'first_name', 'last_name'])
df3=pd.DataFrame(raw_data_3,columns= ['subject_id','test_id'])

#########################################################
#将data1和data2两个数据框按照行的维度进行合并，命名为all_data
all_data=pd.concat([df1,df2],axis=0)
print(all_data)

#########################################################
#将data1和data2两个数据框按照列的维度进行合并，命名为all_data_col
all_data_col=pd.concat([df1,df2],axis=1)



#########################################################
#打印data3
print(df3)
#########################################################
# 按照subject_id的值对all_data和data3作合并
pd4=pd.merge(df3,all_data,on='subject_id')
"""
pd.merge 是 Pandas 库中用于合并两个数据框（DataFrame）的函数。它支持多种合并方式，包括内连接（inner join）、外连接（outer join）、左连接（left join）和右连接（right join）。以下是 pd.merge 的主要参数和用法：
主要参数
left: 需要合并的第一个数据框。
right: 需要合并的第二个数据框。
how: 指定合并的方式，可选值有 'inner'、'outer'、'left'、'right'。
'inner'：默认值，只保留两个数据框中都存在的键。
'outer'：保留两个数据框中的所有键，缺失值用 NaN 填充。
'left'：保留左数据框中的所有键，右数据框中不存在的键用 NaN 填充。
'right'：保留右数据框中的所有键，左数据框中不存在的键用 NaN 填充。
on: 指定用于合并的列名，必须在两个数据框中都存在。
left_on: 指定左数据框中的列名，用于与右数据框中的列进行匹配。
right_on: 指定右数据框中的列名，用于与左数据框中的列进行匹配。
suffixes: 当两个数据框中有相同的列名时，指定这些列的后缀，以便区分。
indicator: 是否添加一列来指示每行数据来自哪个数据框。"""
print(pd4)
#########################################################
#对data1和data2按照subject_id作连接
df5=pd.merge(df1,df2,on='subject_id')
#########################################################
#找到 data1 和 data2 合并之后的所有匹配结果
df6=pd.merge(df1,df2,on='subject_id',how='outer')
print(df6)






